package v1

import (
	"devops-super/api"
	"devops-super/internal/model/entity"
	"github.com/gogf/gf/v2/frame/g"
)

// SysConfigGetPageLstReq 分页获取系统配置列表请求
type SysConfigGetPageLstReq struct {
	g.Meta `method:"get" path:"/sys-config/page-list" summary:"分页获取系统配置列表" tags:"系统配置"`
	*api.PageLstReq
	GroupName string `json:"groupName" in:"query"` // 配置组名筛选
	ConfigKey string `json:"configKey" in:"query"` // 配置键筛选
}

// SysConfigGetPageLstRes 分页获取系统配置列表响应
type SysConfigGetPageLstRes struct {
	*api.PageLstRes[*entity.SysConfig]
}

// SysConfigAddReq 新增系统配置请求
type SysConfigAddReq struct {
	g.Meta     `method:"post" path:"/sys-config" summary:"新增系统配置" tags:"系统配置"`
	GroupName  string `v:"required#配置组名不能为空" json:"groupName"`
	ConfigKey  string `v:"required#配置键不能为空" json:"configKey"`
	ConfigValue string `v:"required#配置值不能为空" json:"configValue"`
	Remark     string `json:"remark"`
}

// SysConfigAddRes 新增系统配置响应
type SysConfigAddRes struct {}

// SysConfigUptReq 更新系统配置请求
type SysConfigUptReq struct {
	g.Meta     `method:"put" path:"/sys-config/{id}" summary:"更新系统配置" tags:"系统配置"`
	Id         int    `v:"min:1#配置ID必须" path:"id"`
	GroupName  string `v:"required#配置组名不能为空" json:"groupName"`
	ConfigKey  string `v:"required#配置键不能为空" json:"configKey"`
	ConfigValue string `v:"required#配置值不能为空" json:"configValue"`
	Remark     string `json:"remark"`
}

// SysConfigUptRes 更新系统配置响应
type SysConfigUptRes struct {}

// SysConfigDelReq 删除系统配置请求
type SysConfigDelReq struct {
	g.Meta `method:"delete" path:"/sys-config/{id}" summary:"删除系统配置" tags:"系统配置"`
	Id     int `v:"min:1#配置ID必须" path:"id"`
}

// SysConfigDelRes 删除系统配置响应
type SysConfigDelRes struct {}

// SysConfigGetOneReq 获取单条系统配置请求
type SysConfigGetOneReq struct {
	g.Meta `method:"get" path:"/sys-config/getOne" summary:"获取单条系统配置" tags:"系统配置"`
	Id     int `v:"min:1#配置ID必须" json:"id"`
}

// SysConfigGetOneRes 获取单条系统配置响应
type SysConfigGetOneRes struct {
	Info *entity.SysConfig `json:"info"`
}

// SysConfigGetOptionsReq 获取系统配置选项请求
type SysConfigGetOptionsReq struct {
	g.Meta      `method:"get" path:"/sys-config/getOptions" summary:"获取系统配置选项" tags:"系统配置"`
	GroupName   string `json:"groupName"` // 按配置组名筛选
	FieldKey    string `json:"fieldKey"`  // 自定义value字段
	FieldLabel  string `json:"fieldLabel"`// 自定义label字段
}

// SysConfigGetOptionsRes 获取系统配置选项响应
type SysConfigGetOptionsRes struct {
	Options []*api.FormOptionsItem `json:"options"`
}

// GetSysGroupConfigsReq 获取系统配置组请求
type GetSysGroupConfigsReq struct {
	g.Meta    `method:"get" path:"/sys-config/getGroupConfigs" summary:"获取系统配置组" tags:"系统配置"`
	GroupName string `v:"required#配置组名必须" json:"groupName" in:"query"`
}

// GetSysGroupConfigsRes 获取系统配置组响应
type GetSysGroupConfigsRes struct {
	Configs   []*entity.SysConfig `json:"configs"`
	UpdatedAt string              `json:"updatedAt"`
}

// SetSysGroupConfigsReq 保存系统配置组请求
type SetSysGroupConfigsReq struct {
	g.Meta    `method:"post" path:"/sys-config/setGroupConfigs" summary:"保存系统配置组" tags:"系统配置"`
	GroupName string `v:"required#配置组名必须" json:"groupName"`
	Configs   []struct {
		ConfigKey   string `v:"required#配置键必须" json:"configKey"`
		ConfigValue string `v:"required#配置值必须" json:"configValue"`
		ConfigDesc  string `json:"configDesc"`
	} `v:"required#配置项不能为空" json:"configs"`
}

// SetSysGroupConfigsRes 保存系统配置组响应
type SetSysGroupConfigsRes struct {}